//  延时操作
function setDelayTime(sec) {
  return new Promise((resolve, reject) => {
    setTimeout(() => { resolve() }, sec)
  });
}

//  X坐移动动画
function flyXAnimation(translateValue, duration){
  let animation = wx.createAnimation({
    duration: duration || 300,
    timingFunction: 'linear',
  })
  animation.translateX(translateValue).step();
  return animation;
}

//  Y坐移动动画
function flyYAnimation(translateValue, duration,timingFunction) {
  let animation = wx.createAnimation({
    duration: duration || 300,
    timingFunction: timingFunction ? timingFunction : 'ease-out',
  })
  animation.translateY(translateValue).step();
  return animation;
}

//  X左移动动画
function moveXAnimation(offset, duration){
  let animation = wx.createAnimation({
    duration: duration || 150,
    timingFunction: 'linear'
  });
  animation.left(offset).step();
  return animation
}

//  转为doble类型
function doubleValue(tmpValue){
  if (typeof(tmpValue) == 'string'){
    return parseFloat(tmpValue)
  }
  return tmpValue
}

//  配送费用  
function distributionCost(distance,orderAmont){
  //  【不使用】规则一：
  //  0-19 包邮  19-24 +10  24-30 +20 超过30 不配送
  //  0-10 包邮  10-24 +10  24-30 +20 超过30 不配送 [当前使用的规则]
  //  规则二：
  //  不满150   不使用这个规则。每五公里7元快递费
  //  不满150   不使用这个规则。每公里3.5元快递费【当前使用的规则】
  //  规则三：
  //  每公里*2.5元 来计算
  if(distance > 30000){
    return -1;
  }
  var multiple = distance / 1000
  if(orderAmont <150){
    // var multiple = distance / 5000
    // multiple = Math.ceil(multiple)
    // return multiple * 7;
    // Math.round
    return Math.round(multiple * 3.5)
  }
  else {
    return Math.round(multiple * 2.5)
  }

  if(distance < 10000){
    return 0
  }
  else if(distance >= 10000 && distance < 24000){
    return 10
  }
  else if(distance >= 24000 && distance <= 30000){
    return 20
  }
  else{
    return -1
  } 
}

function getWeekDay(date){
  let tmpWeekIndex = date.getDay()
  switch (tmpWeekIndex){
    case 1:
      return "周一";
      break;  
    case 2:
      return "周二";
      break;  
    case 3:
      return "周三";
      break;  
    case 4:
      return "周四";
      break;  
    case 5:
      return "周五";
      break;  
    case 6:
      return "周六";
      break;  
    case 0:
      return "周日";
      break;
      default:
      return "";
  }
}

function getUserAddressInfo(callback){
  wx.showLoading({
    title: '获取中...',
  })
  wx.getSetting({
    success(res){
      wx.hideLoading()
      if(res.authSetting['scope.address'] === undefined){
        console.log('小程序还没有请求过通讯地址')
        wx.chooseAddress({
          success(res){
            // console.log('授权成功',res)
            callback(res)
          },
          fail(err){

          }
        })
      }else if(res.authSetting['scope.address'] === true){
        wx.chooseAddress({
          success(res) {
            // console.log('授权成功', res)
            callback(res)
          },
          fail(err) {

          }
        })
      } else if (res.authSetting['scope.address'] === false){
        wx.showModal({
          title: '温馨提示',
          content: '您需要授权后，才能使用收货地址功能，是否重新授权',
          success(res){
            if(res.confirm){
              wx.openSetting({
                success(res){
                  wx.chooseAddress({
                    success(res){
                      // console.log('授权成功', res)
                      callback(res)
                    }
                  })
                }
              })
            }
          }
        })
      }
    }
  })
}

function getQueryString(url,name){
  var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')
  var r = url.substr(1).match(reg)
  if (r != null) {
    return r[2]
  }
  return null;
}

module.exports = {
  setDelayTime,
  flyXAnimation,
  flyYAnimation,
  moveXAnimation,
  doubleValue,
  distributionCost,
  getUserAddressInfo,
  getWeekDay,
  getQueryString
}

Date.prototype.format = function(fmt){
  var o = {
    "M+": this.getMonth() + 1, //月份
    "d+": this.getDate(), //日
    "h+": this.getHours(), //小时
    "m+": this.getMinutes(), //分
    "s+": this.getSeconds(), //秒
    "q+": Math.floor((this.getMonth() + 3) / 3), //季度
    "S": this.getMilliseconds() //毫秒
  };
  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  return fmt;
}